//实现二分查找，在有序数字的前提之下

#include <stdio.h>
//strlen是求字符串长度只能针对字符串或者字符数字使用，而这里使用的是整型数组
/*int main()
{
    int arr[]={1,3,4,6,7,9,10,13,15,17,20};//假设是一个升序数组
    int sz = sizeof(arr) / sizeof(arr[0]); // 利用sizeof函数来计算数组中的元素个数
    int left=0;
    int right=sz-1;//表示数组元素的下标，数组元素下标从0开始，所以个数要-1才和下标一致
    int mid;
    int flag=0;//假设找不到
    int k;
    printf("I want to find\n");
    scanf("%d",&k);
    while(left<=right)
    {
        mid = (left + right) / 2; // 注意这个条件要放在循环内部，每一次循环都要更新mid值，否则永远都是初始的中间值
        if (arr[mid] < k)
        {
            left = mid + 1;
        }
        else if (arr[mid] > k)
        {
            right = mid - 1;
        }
        else
        {
            printf("Found!It is %d", mid);
            flag = 1;
            break;
        }
    }
    if(!flag)  //灵活使用flag作为判断的标准
    {
        printf("Not found!");
    }
    return 0;
}*/

//求两个数字的平均值
int main()
{
    int a=2147483646;  //在数据没有溢出的情况下数字很大，导致后面的a+b在int类型之下无法完全存储，数字多余的会被丢弃导致最后的结果不准确
    int b=2147483646;
    //int avg=(a+b)/2; //当数字特别大的时候这种算法存在问题
    int avg=b+(a-b)/2; //考虑将相对多出来的一段一分为二加在少数的上面
    printf("%d",avg);
    return 0;
}